package com.llb666.java.leetcode;

/**
 *实现 pow(x, n) ，即计算 x 的 n 次幂函数
 * Created by 斌~
 * 2021/3/12 15:33
 */
public class LeetCode50 {
    /**
     * 模取幂等算法
     * @param x 底数
     * @param m 次方
     * @return x的m次方
     */
    private static double pow(double x,long m){
        double r =1.;
        for(;m>0;m>>=1){
            //奇数次幂
            if((m&1)==1){
                r *=x;
            }
            x*=x;
        }
        return r;
    }

    public static double myPow(double x, int n) {
        if(n == 0){
            return 1;
        }
        long m =n;
        return m>=0?pow(x,m):1./pow(x,-m);
    }

    public static void main(String[] args) {
        System.out.println(myPow(2,3));
        System.out.println(myPow(2,-3));

    }
}
